#ifndef HRCORE_MOD
#define HRCORE_MOD

#include <iostream>
#include <alcommon/almodule.h>
#include <Eigen/Dense>
#include <World.h>

using namespace std;
using namespace Eigen;
using namespace hrCore;
//testing commit
//testing commit with messagess
namespace AL{

    // This is a forward declaration of AL:ALBroker which
    // avoids including <alcommon/albroker.h> in this header
    class ALBroker;

}
/**
 * This class inherits AL::ALModule. This allows it to bind methods
 * and be run as a remote executable within NAOqi
 */
class HRCoreMod : public AL::ALModule
{
public:
    HRCoreMod(boost::shared_ptr<AL::ALBroker> broker,
            const std::string &name);

    virtual ~HRCoreMod();

    /**
     * Overloading ALModule::init().
     * This is called right after the module has been loaded
     */
    virtual void init();

private:
    string nameMod;
    string sFile;
    World world;
    int levelMod;
    int MultiBodyID;
    MatrixXf matrixMod;
    bool done;
public:
    string getNameMod(){return nameMod;}
    int getLevelMod(){return levelMod;}
    int getDoF();
    int getNumberOfBodies();

    AL::ALValue getMatrixMod();
    AL::ALValue getBodyPosition(const int &);

    bool isDone(){return done;}
};


#endif //HRCORE_MOD
